package com.medical.data.domain;

import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * <p>
 * 
 * </p>
 *
 * @author cj
 * @since 2024-02-06
 */
@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="Patient对象", description="")
public class Patient implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.ASSIGN_UUID)
    private String id;

    @ApiModelProperty(value = "所处项目id")
    private String projectId;

    @ApiModelProperty(value = "医生id")
    private String doctorId;

    @ApiModelProperty(value = "患者姓名")
    private String patientName;

    @ApiModelProperty(value = "患者性别")
    private String patientGender;

    @ApiModelProperty(value = "患者身份证号")
    private String idCard;

    @ApiModelProperty(value = "疾病类型")
    private String diseaseType;

    @ApiModelProperty(value = "患者病历号")
    private String recordNumber;

    @ApiModelProperty(value = "门诊号")
    private String outPatientNo;

    @ApiModelProperty(value = "住院号")
    private String patientNo;

    @ApiModelProperty(value = "患者电话")
    private String patientPhone;

    @ApiModelProperty(value = "患者年龄")
    private int patientAge;

    @ApiModelProperty(value = "患者家庭地址")
    private String patientAddr;

    @ApiModelProperty(value = "医院id")
    private String hospitalId;

    @ApiModelProperty(value = "入院时间")
    private Date inTime;

    @ApiModelProperty(value = "出院时间")
    private Date outTime;

    @ApiModelProperty(value = "是否出院:0表示不住院1表示住院未出院2表示住院已出院")
    private Boolean status;

    @TableLogic
    @ApiModelProperty(value = "软删除：0代表未删除1代表删除")
    private Boolean isDelete;

    @Version
    @ApiModelProperty(value = "版本号")
    private Integer version;

    @TableField(fill = FieldFill.INSERT)
    @ApiModelProperty(value = "创建时间")
    private Date createTime;

    @TableField(fill = FieldFill.INSERT_UPDATE)
    @ApiModelProperty(value = "更新时间")
    private Date updateTime;

    @ApiModelProperty(value = "是否随访:0表示不随访(默认)1表示随访")
    private Boolean isFollowUp;

    @ApiModelProperty(value = "随访时间")
    private Date followUpTime;

    @ApiModelProperty(value = "随访时间间隔，json字符串")
    private String followUpTimeJson;

    @ApiModelProperty(value = "具体的随访时间，json字符串")
    private String newFollowUpTimes;

    @ApiModelProperty(value = "随访节点")
    private String followUpNodeJson;
}
